/*	Frost Open-Source World of Warcraft Bot
	Copyright (C) 2013 https://code.google.com/p/ejt-projects/

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>. */

#ifndef _DESCRIPTORS_H_
#define _DESCRIPTORS_H_

namespace Descriptors {
	const unsigned int DescriptorMulti = 4;
	const unsigned int DescriptorOffset = 0x8;

	enum ObjectFields {
		OBJECT_FIELD_GUID = 0x00,
		OBJECT_FIELD_DATA = 0x02,
		OBJECT_FIELD_TYPE = 0x04,
		OBJECT_FIELD_ENTRY = 0x05,
		OBJECT_FIELD_SCALE = 0x06,
		OBJECT_FIELD_END = 0x07,
	};
		
	enum ItemFields  {
        ITEM_FIELD_OWNER = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        ITEM_FIELD_CONTAINED_IN = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        ITEM_FIELD_CREATOR = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_ALL
        ITEM_FIELD_GIFT_CREATOR = Descriptors::OBJECT_FIELD_END + 0x06,			//MIRROR_ALL
        ITEM_FIELD_STACK_COUNT = Descriptors::OBJECT_FIELD_END + 0x08,			//MIRROR_OWNER
        ITEM_FIELD_EXPIRATION = Descriptors::OBJECT_FIELD_END + 0x09,			//MIRROR_OWNER
        ITEM_FIELD_SPELL_CHARGES = Descriptors::OBJECT_FIELD_END + 0x0A,			//MIRROR_OWNER
        ITEM_FIELD_DYNAMIC_FLAGS = Descriptors::OBJECT_FIELD_END + 0x0F,			//MIRROR_ALL
        ITEM_FIELD_ENCHANTMENT = Descriptors::OBJECT_FIELD_END + 0x10,			//MIRROR_ALL
        ITEM_FIELD_PROPERTY_SEED = Descriptors::OBJECT_FIELD_END + 0x37,			//MIRROR_ALL
        ITEM_FIELD_RANDOM_PROPERTIES_ID = Descriptors::OBJECT_FIELD_END + 0x38,			//MIRROR_ALL
        ITEM_FIELD_DURABILITY = Descriptors::OBJECT_FIELD_END + 0x39,			//MIRROR_OWNER
        ITEM_FIELD_MAX_DURABILITY = Descriptors::OBJECT_FIELD_END + 0x3A,			//MIRROR_OWNER
        ITEM_FIELD_CREATE_PLAYED_TIME = Descriptors::OBJECT_FIELD_END + 0x3B,			//MIRROR_ALL
        ITEM_FIELD_MODIFIERS_MASK = Descriptors::OBJECT_FIELD_END + 0x3C,			//MIRROR_OWNER
        ITEM_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x3D,
    };
		
	enum ContainerFields {
        CONTAINER_FIELD_SLOTS = Descriptors::ITEM_FIELD_END + 0x00,			//MIRROR_ALL
        CONTAINER_FIELD_NUM_SLOTS = Descriptors::ITEM_FIELD_END + 0x48,			//MIRROR_ALL
        CONTAINER_FIELD_END = Descriptors::ITEM_FIELD_END + 0x49,
    };
		
	enum UnitFields {
        UNIT_FIELD_CHARM = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        UNIT_FIELD_SUMMON = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        UNIT_FIELD_CRITTER = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_SELF
        UNIT_FIELD_CHARMED_BY = Descriptors::OBJECT_FIELD_END + 0x06,			//MIRROR_ALL
        UNIT_FIELD_SUMMONED_BY = Descriptors::OBJECT_FIELD_END + 0x08,			//MIRROR_ALL
        UNIT_FIELD_CREATED_BY = Descriptors::OBJECT_FIELD_END + 0x0A,			//MIRROR_ALL
        UNIT_FIELD_TARGET = Descriptors::OBJECT_FIELD_END + 0x0C,			//MIRROR_ALL
        UNIT_FIELD_CHANNEL_OBJECT = Descriptors::OBJECT_FIELD_END + 0x0E,			//MIRROR_ALL, MIRROR_URGENT
        UNIT_FIELD_CHANNEL_SPELL = Descriptors::OBJECT_FIELD_END + 0x10,			//MIRROR_ALL, MIRROR_URGENT
        UNIT_FIELD_SUMMONED_BY_HOME_REALM = Descriptors::OBJECT_FIELD_END + 0x11,			//MIRROR_ALL
        UNIT_FIELD_DISPLAY_POWER = Descriptors::OBJECT_FIELD_END + 0x12,			//MIRROR_ALL
        UNIT_FIELD_OVERRIDE_DISPLAY_POWER_ID = Descriptors::OBJECT_FIELD_END + 0x13,			//MIRROR_ALL
        UNIT_FIELD_HEALTH = Descriptors::OBJECT_FIELD_END + 0x14,			//MIRROR_ALL
        UNIT_FIELD_POWER = Descriptors::OBJECT_FIELD_END + 0x15,			//MIRROR_ALL
        UNIT_FIELD_MAXHEALTH = Descriptors::OBJECT_FIELD_END + 0x1A,			//MIRROR_ALL
        UNIT_FIELD_MAXPOWER = Descriptors::OBJECT_FIELD_END + 0x1B,			//MIRROR_ALL
        UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER = Descriptors::OBJECT_FIELD_END + 0x20,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_UNIT_ALL
        UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = Descriptors::OBJECT_FIELD_END + 0x25,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_UNIT_ALL
        UNIT_FIELD_LEVEL = Descriptors::OBJECT_FIELD_END + 0x2A,			//MIRROR_ALL
        UNIT_FIELD_FACTION_TEMPLATE = Descriptors::OBJECT_FIELD_END + 0x2B,			//MIRROR_ALL
        UNIT_FIELD_VIRTUAL_ITEM_ID = Descriptors::OBJECT_FIELD_END + 0x2C,			//MIRROR_ALL
        UNIT_FIELD_FLAGS = Descriptors::OBJECT_FIELD_END + 0x2F,			//MIRROR_ALL
        UNIT_FIELD_FLAGS_2 = Descriptors::OBJECT_FIELD_END + 0x30,			//MIRROR_ALL
        UNIT_FIELD_AURA_STATE = Descriptors::OBJECT_FIELD_END + 0x31,			//MIRROR_ALL
        UNIT_FIELD_ATTACK_ROUND_BASE_TIME = Descriptors::OBJECT_FIELD_END + 0x32,			//MIRROR_ALL
        UNIT_FIELD_RANGED_ATTACK_ROUND_BASE_TIME = Descriptors::OBJECT_FIELD_END + 0x34,			//MIRROR_SELF
        UNIT_FIELD_BOUNDING_RADIUS = Descriptors::OBJECT_FIELD_END + 0x35,			//MIRROR_ALL
        UNIT_FIELD_COMBAT_REACH = Descriptors::OBJECT_FIELD_END + 0x36,			//MIRROR_ALL
        UNIT_FIELD_DISPLAY_ID = Descriptors::OBJECT_FIELD_END + 0x37,			//MIRROR_VIEWER_DEPENDENT, MIRROR_URGENT
        UNIT_FIELD_NATIVE_DISPLAY_ID = Descriptors::OBJECT_FIELD_END + 0x38,			//MIRROR_ALL, MIRROR_URGENT
        UNIT_FIELD_MOUNT_DISPLAY_ID = Descriptors::OBJECT_FIELD_END + 0x39,			//MIRROR_ALL, MIRROR_URGENT
        UNIT_FIELD_MIN_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x3A,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_EMPATH
        UNIT_FIELD_MAX_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x3B,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_EMPATH
        UNIT_FIELD_MIN_OFF_HAND_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x3C,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_EMPATH
        UNIT_FIELD_MAX_OFF_HAND_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x3D,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_EMPATH
        UNIT_FIELD_ANIM_TIER = Descriptors::OBJECT_FIELD_END + 0x3E,			//MIRROR_ALL
        UNIT_FIELD_PET_NUMBER = Descriptors::OBJECT_FIELD_END + 0x3F,			//MIRROR_ALL
        UNIT_FIELD_PET_NAME_TIMESTAMP = Descriptors::OBJECT_FIELD_END + 0x40,			//MIRROR_ALL
        UNIT_FIELD_PET_EXPERIENCE = Descriptors::OBJECT_FIELD_END + 0x41,			//MIRROR_OWNER
        UNIT_FIELD_PET_NEXT_LEVEL_EXPERIENCE = Descriptors::OBJECT_FIELD_END + 0x42,			//MIRROR_OWNER
        UNIT_FIELD_DYNAMIC_FLAGS = Descriptors::OBJECT_FIELD_END + 0x43,			//MIRROR_VIEWER_DEPENDENT
        UNIT_FIELD_MOD_CASTING_SPEED = Descriptors::OBJECT_FIELD_END + 0x44,			//MIRROR_ALL
        UNIT_FIELD_MOD_SPELL_HASTE = Descriptors::OBJECT_FIELD_END + 0x45,			//MIRROR_ALL
        UNIT_FIELD_MOD_HASTE = Descriptors::OBJECT_FIELD_END + 0x46,			//MIRROR_ALL
        UNIT_FIELD_MOD_HASTE_REGEN = Descriptors::OBJECT_FIELD_END + 0x47,			//MIRROR_ALL
        UNIT_FIELD_CREATED_BY_SPELL = Descriptors::OBJECT_FIELD_END + 0x48,			//MIRROR_ALL
        UNIT_FIELD_NPC_FLAGS = Descriptors::OBJECT_FIELD_END + 0x49,			//MIRROR_ALL
        UNIT_FIELD_EMOTE_STATE = Descriptors::OBJECT_FIELD_END + 0x4B,			//MIRROR_ALL
        UNIT_FIELD_STATS = Descriptors::OBJECT_FIELD_END + 0x4C,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_STAT_POS_BUFF = Descriptors::OBJECT_FIELD_END + 0x51,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_STAT_NEG_BUFF = Descriptors::OBJECT_FIELD_END + 0x56,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RESISTANCES = Descriptors::OBJECT_FIELD_END + 0x5B,			//MIRROR_SELF, MIRROR_OWNER, MIRROR_EMPATH
        UNIT_FIELD_RESISTANCE_BUFF_MODS_POSITIVE = Descriptors::OBJECT_FIELD_END + 0x62,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RESISTANCE_BUFF_MODS_NEGATIVE = Descriptors::OBJECT_FIELD_END + 0x69,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_BASE_MANA = Descriptors::OBJECT_FIELD_END + 0x70,			//MIRROR_ALL
        UNIT_FIELD_BASE_HEALTH = Descriptors::OBJECT_FIELD_END + 0x71,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_SHAPESHIFT_FORM = Descriptors::OBJECT_FIELD_END + 0x72,			//MIRROR_ALL
        UNIT_FIELD_ATTACK_POWER = Descriptors::OBJECT_FIELD_END + 0x73,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_ATTACK_POWER_MOD_POS = Descriptors::OBJECT_FIELD_END + 0x74,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_ATTACK_POWER_MOD_NEG = Descriptors::OBJECT_FIELD_END + 0x75,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_ATTACK_POWER_MULTIPLIER = Descriptors::OBJECT_FIELD_END + 0x76,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RANGED_ATTACK_POWER = Descriptors::OBJECT_FIELD_END + 0x77,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = Descriptors::OBJECT_FIELD_END + 0x78,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = Descriptors::OBJECT_FIELD_END + 0x79,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = Descriptors::OBJECT_FIELD_END + 0x7A,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_MIN_RANGED_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x7B,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_MAX_RANGED_DAMAGE = Descriptors::OBJECT_FIELD_END + 0x7C,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_POWER_COST_MODIFIER = Descriptors::OBJECT_FIELD_END + 0x7D,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_POWER_COST_MULTIPLIER = Descriptors::OBJECT_FIELD_END + 0x84,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_MAX_HEALTH_MODIFIER = Descriptors::OBJECT_FIELD_END + 0x8B,			//MIRROR_SELF, MIRROR_OWNER
        UNIT_FIELD_HOVER_HEIGHT = Descriptors::OBJECT_FIELD_END + 0x8C,			//MIRROR_ALL
        UNIT_FIELD_MIN_ITEM_LEVEL = Descriptors::OBJECT_FIELD_END + 0x8D,			//MIRROR_ALL
        UNIT_FIELD_MAX_ITEM_LEVEL = Descriptors::OBJECT_FIELD_END + 0x8E,			//MIRROR_ALL
        UNIT_FIELD_WILD_BATTLE_PET_LEVEL = Descriptors::OBJECT_FIELD_END + 0x8F,			//MIRROR_ALL
        UNIT_FIELD_BATTLE_PET_COMPANION_GUID = Descriptors::OBJECT_FIELD_END + 0x90,			//MIRROR_ALL
        UNIT_FIELD_BATTLE_PET_COMPANION_NAME_TIMESTAMP = Descriptors::OBJECT_FIELD_END + 0x92,			//MIRROR_ALL
        UNIT_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x93,
    };
		
	enum PlayerFields {
        PLAYER_FIELD_DUEL_ARBITER = Descriptors::UNIT_FIELD_END + 0x00,			//MIRROR_ALL
        PLAYER_FIELD_PLAYER_FLAGS = Descriptors::UNIT_FIELD_END + 0x02,			//MIRROR_ALL
        PLAYER_FIELD_GUILD_RANK_ID = Descriptors::UNIT_FIELD_END + 0x03,			//MIRROR_ALL
        PLAYER_FIELD_GUILD_DELETE_DATE = Descriptors::UNIT_FIELD_END + 0x04,			//MIRROR_ALL
        PLAYER_FIELD_GUILD_LEVEL = Descriptors::UNIT_FIELD_END + 0x05,			//MIRROR_ALL
        PLAYER_FIELD_HAIR_COLOR_ID = Descriptors::UNIT_FIELD_END + 0x06,			//MIRROR_ALL
        PLAYER_FIELD_REST_STATE = Descriptors::UNIT_FIELD_END + 0x07,			//MIRROR_ALL
        PLAYER_FIELD_ARENA_FACTION = Descriptors::UNIT_FIELD_END + 0x08,			//MIRROR_ALL
        PLAYER_FIELD_DUEL_TEAM = Descriptors::UNIT_FIELD_END + 0x09,			//MIRROR_ALL
        PLAYER_FIELD_GUILD_TIME_STAMP = Descriptors::UNIT_FIELD_END + 0x0A,			//MIRROR_ALL
        PLAYER_FIELD_QUEST_LOG = Descriptors::UNIT_FIELD_END + 0x0B,			//MIRROR_PARTY
        PLAYER_FIELD_VISIBLE_ITEMS = Descriptors::UNIT_FIELD_END + 0x2F9,			//MIRROR_ALL
        PLAYER_FIELD_PLAYER_TITLE = Descriptors::UNIT_FIELD_END + 0x31F,			//MIRROR_ALL
        PLAYER_FIELD_FAKE_INEBRIATION = Descriptors::UNIT_FIELD_END + 0x320,			//MIRROR_ALL
        PLAYER_FIELD_HOME_PLAYER_REALM = Descriptors::UNIT_FIELD_END + 0x321,			//MIRROR_ALL
        PLAYER_FIELD_CURRENT_SPEC_ID = Descriptors::UNIT_FIELD_END + 0x322,			//MIRROR_ALL
        PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = Descriptors::UNIT_FIELD_END + 0x323,			//MIRROR_ALL
        PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = Descriptors::UNIT_FIELD_END + 0x324,			//MIRROR_ALL
        PLAYER_FIELD_INV_SLOTS = Descriptors::UNIT_FIELD_END + 0x325,			//MIRROR_SELF
        PLAYER_FIELD_FARSIGHT_OBJECT = Descriptors::UNIT_FIELD_END + 0x3D1,			//MIRROR_SELF
        PLAYER_FIELD_KNOWN_TITLES = Descriptors::UNIT_FIELD_END + 0x3D3,			//MIRROR_SELF
        PLAYER_FIELD_COINAGE = Descriptors::UNIT_FIELD_END + 0x3DB,			//MIRROR_SELF
        PLAYER_FIELD_XP = Descriptors::UNIT_FIELD_END + 0x3DD,			//MIRROR_SELF
        PLAYER_FIELD_NEXT_LEVEL_XP = Descriptors::UNIT_FIELD_END + 0x3DE,			//MIRROR_SELF
        PLAYER_FIELD_SKILL = Descriptors::UNIT_FIELD_END + 0x3DF,			//MIRROR_SELF
        PLAYER_FIELD_CHARACTER_POINTS = Descriptors::UNIT_FIELD_END + 0x59F,			//MIRROR_SELF
        PLAYER_FIELD_MAX_TALENT_TIERS = Descriptors::UNIT_FIELD_END + 0x5A0,			//MIRROR_SELF
        PLAYER_FIELD_TRACK_CREATURE_MASK = Descriptors::UNIT_FIELD_END + 0x5A1,			//MIRROR_SELF
        PLAYER_FIELD_TRACK_RESOURCE_MASK = Descriptors::UNIT_FIELD_END + 0x5A2,			//MIRROR_SELF
        PLAYER_FIELD_EXPERTISE = Descriptors::UNIT_FIELD_END + 0x5A3,			//MIRROR_SELF
        PLAYER_FIELD_OFFHAND_EXPERTISE = Descriptors::UNIT_FIELD_END + 0x5A4,			//MIRROR_SELF
        PLAYER_FIELD_RANGED_EXPERTISE = Descriptors::UNIT_FIELD_END + 0x5A5,			//MIRROR_SELF
        PLAYER_FIELD_BLOCK_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5A6,			//MIRROR_SELF
        PLAYER_FIELD_DODGE_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5A7,			//MIRROR_SELF
        PLAYER_FIELD_PARRY_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5A8,			//MIRROR_SELF
        PLAYER_FIELD_CRIT_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5A9,			//MIRROR_SELF
        PLAYER_FIELD_RANGED_CRIT_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5AA,			//MIRROR_SELF
        PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5AB,			//MIRROR_SELF
        PLAYER_FIELD_SPELL_CRIT_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5AC,			//MIRROR_SELF
        PLAYER_FIELD_SHIELD_BLOCK = Descriptors::UNIT_FIELD_END + 0x5B3,			//MIRROR_SELF
        PLAYER_FIELD_SHIELD_BLOCK_CRIT_PERCENTAGE = Descriptors::UNIT_FIELD_END + 0x5B4,			//MIRROR_SELF
        PLAYER_FIELD_MASTERY = Descriptors::UNIT_FIELD_END + 0x5B5,			//MIRROR_SELF
        PLAYER_FIELD_PVP_POWER_DAMAGE = Descriptors::UNIT_FIELD_END + 0x5B6,			//MIRROR_SELF
        PLAYER_FIELD_PVP_POWER_HEALING = Descriptors::UNIT_FIELD_END + 0x5B7,			//MIRROR_SELF
        PLAYER_FIELD_EXPLORED_ZONES = Descriptors::UNIT_FIELD_END + 0x5B8,			//MIRROR_SELF
        PLAYER_FIELD_REST_STATE_BONUS_POOL = Descriptors::UNIT_FIELD_END + 0x680,			//MIRROR_SELF
        PLAYER_FIELD_MOD_DAMAGE_DONE_POS = Descriptors::UNIT_FIELD_END + 0x681,			//MIRROR_SELF
        PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = Descriptors::UNIT_FIELD_END + 0x688,			//MIRROR_SELF
        PLAYER_FIELD_MOD_DAMAGE_DONE_PERCENT = Descriptors::UNIT_FIELD_END + 0x68F,			//MIRROR_SELF
        PLAYER_FIELD_MOD_HEALING_DONE_POS = Descriptors::UNIT_FIELD_END + 0x696,			//MIRROR_SELF
        PLAYER_FIELD_MOD_HEALING_PERCENT = Descriptors::UNIT_FIELD_END + 0x697,			//MIRROR_SELF
        PLAYER_FIELD_MOD_HEALING_DONE_PERCENT = Descriptors::UNIT_FIELD_END + 0x698,			//MIRROR_SELF
        PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = Descriptors::UNIT_FIELD_END + 0x699,			//MIRROR_SELF
        PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = Descriptors::UNIT_FIELD_END + 0x69A,			//MIRROR_SELF
        PLAYER_FIELD_MOD_SPELL_POWER_PERCENT = Descriptors::UNIT_FIELD_END + 0x69D,			//MIRROR_SELF
        PLAYER_FIELD_MOD_RESILIENCE_PERCENT = Descriptors::UNIT_FIELD_END + 0x69E,			//MIRROR_SELF
        PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_APPERCENT = Descriptors::UNIT_FIELD_END + 0x69F,			//MIRROR_SELF
        PLAYER_FIELD_OVERRIDE_APBY_SPELL_POWER_PERCENT = Descriptors::UNIT_FIELD_END + 0x6A0,			//MIRROR_SELF
        PLAYER_FIELD_MOD_TARGET_RESISTANCE = Descriptors::UNIT_FIELD_END + 0x6A1,			//MIRROR_SELF
        PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = Descriptors::UNIT_FIELD_END + 0x6A2,			//MIRROR_SELF
        PLAYER_FIELD_LIFETIME_MAX_RANK = Descriptors::UNIT_FIELD_END + 0x6A3,			//MIRROR_SELF
        PLAYER_FIELD_SELF_RES_SPELL = Descriptors::UNIT_FIELD_END + 0x6A4,			//MIRROR_SELF
        PLAYER_FIELD_PVP_MEDALS = Descriptors::UNIT_FIELD_END + 0x6A5,			//MIRROR_SELF
        PLAYER_FIELD_BUYBACK_PRICE = Descriptors::UNIT_FIELD_END + 0x6A6,			//MIRROR_SELF
        PLAYER_FIELD_BUYBACK_TIMESTAMP = Descriptors::UNIT_FIELD_END + 0x6B2,			//MIRROR_SELF
        PLAYER_FIELD_YESTERDAY_HONORABLE_KILLS = Descriptors::UNIT_FIELD_END + 0x6BE,			//MIRROR_SELF
        PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = Descriptors::UNIT_FIELD_END + 0x6BF,			//MIRROR_SELF
        PLAYER_FIELD_WATCHED_FACTION_INDEX = Descriptors::UNIT_FIELD_END + 0x6C0,			//MIRROR_SELF
        PLAYER_FIELD_COMBAT_RATINGS = Descriptors::UNIT_FIELD_END + 0x6C1,			//MIRROR_SELF
        PLAYER_FIELD_ARENA_TEAMS = Descriptors::UNIT_FIELD_END + 0x6DC,			//MIRROR_SELF
        PLAYER_FIELD_BATTLEGROUND_RATING = Descriptors::UNIT_FIELD_END + 0x6F1,			//MIRROR_SELF
        PLAYER_FIELD_MAX_LEVEL = Descriptors::UNIT_FIELD_END + 0x6F2,			//MIRROR_SELF
        PLAYER_FIELD_RUNE_REGEN = Descriptors::UNIT_FIELD_END + 0x6F3,			//MIRROR_SELF
        PLAYER_FIELD_NO_REAGENT_COST_MASK = Descriptors::UNIT_FIELD_END + 0x6F7,			//MIRROR_SELF
        PLAYER_FIELD_GLYPH_SLOTS = Descriptors::UNIT_FIELD_END + 0x6FB,			//MIRROR_SELF
        PLAYER_FIELD_GLYPHS = Descriptors::UNIT_FIELD_END + 0x701,			//MIRROR_SELF
        PLAYER_FIELD_GLYPH_SLOTS_ENABLED = Descriptors::UNIT_FIELD_END + 0x707,			//MIRROR_SELF
        PLAYER_FIELD_PET_SPELL_POWER = Descriptors::UNIT_FIELD_END + 0x708,			//MIRROR_SELF
        PLAYER_FIELD_RESEARCHING = Descriptors::UNIT_FIELD_END + 0x709,			//MIRROR_SELF
        PLAYER_FIELD_PROFESSION_SKILL_LINE = Descriptors::UNIT_FIELD_END + 0x711,			//MIRROR_SELF
        PLAYER_FIELD_UI_HIT_MODIFIER = Descriptors::UNIT_FIELD_END + 0x713,			//MIRROR_SELF
        PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = Descriptors::UNIT_FIELD_END + 0x714,			//MIRROR_SELF
        PLAYER_FIELD_HOME_REALM_TIME_OFFSET = Descriptors::UNIT_FIELD_END + 0x715,			//MIRROR_SELF
        PLAYER_FIELD_MOD_RANGED_HASTE = Descriptors::UNIT_FIELD_END + 0x716,			//MIRROR_SELF
        PLAYER_FIELD_MOD_PET_HASTE = Descriptors::UNIT_FIELD_END + 0x717,			//MIRROR_SELF
        PLAYER_FIELD_SUMMONED_BATTLE_PET_GUID = Descriptors::UNIT_FIELD_END + 0x718,			//MIRROR_SELF
        PLAYER_FIELD_OVERRIDE_SPELLS_ID = Descriptors::UNIT_FIELD_END + 0x71A,			//MIRROR_SELF, MIRROR_URGENT_SELF_ONLY
        PLAYER_FIELD_END = Descriptors::UNIT_FIELD_END + 0x71B,
    };
		
	enum GameDescriptors {
        GAMEOBJECT_FIELD_CREATED_BY = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        GAMEOBJECT_FIELD_DISPLAY_ID = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        GAMEOBJECT_FIELD_FLAGS = Descriptors::OBJECT_FIELD_END + 0x03,			//MIRROR_ALL, MIRROR_URGENT
        GAMEOBJECT_FIELD_PARENT_ROTATION = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_ALL
        GAMEOBJECT_FIELD_ANIM_PROGRESS = Descriptors::OBJECT_FIELD_END + 0x08,			//MIRROR_VIEWER_DEPENDENT, MIRROR_URGENT
        GAMEOBJECT_FIELD_FACTION_TEMPLATE = Descriptors::OBJECT_FIELD_END + 0x09,			//MIRROR_ALL
        GAMEOBJECT_FIELD_LEVEL = Descriptors::OBJECT_FIELD_END + 0x0A,			//MIRROR_ALL
        GAMEOBJECT_FIELD_PERCENT_HEALTH = Descriptors::OBJECT_FIELD_END + 0x0B,			//MIRROR_ALL, MIRROR_URGENT
        GAMEOBJECT_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x0C,
    };
		
	enum DynamicDescriptors {
        DYNAMICOBJECT_FIELD_CASTER = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        DYNAMICOBJECT_FIELD_TYPE_AND_VISUAL_ID = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_VIEWER_DEPENDENT
        DYNAMICOBJECT_FIELD_SPELL_ID = Descriptors::OBJECT_FIELD_END + 0x03,			//MIRROR_ALL
        DYNAMICOBJECT_FIELD_RADIUS = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_ALL
        DYNAMICOBJECT_FIELD_CAST_TIME = Descriptors::OBJECT_FIELD_END + 0x05,			//MIRROR_ALL
        DYNAMICOBJECT_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x06,
    };
		
	enum CorpseFields {
        CORPSE_FIELD_OWNER = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        CORPSE_FIELD_PARTY_GUID = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        CORPSE_FIELD_DISPLAY_ID = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_ALL
        CORPSE_FIELD_ITEMS = Descriptors::OBJECT_FIELD_END + 0x05,			//MIRROR_ALL
        CORPSE_FIELD_SKIN_ID = Descriptors::OBJECT_FIELD_END + 0x18,			//MIRROR_ALL
        CORPSE_FIELD_FACIAL_HAIR_STYLE_ID = Descriptors::OBJECT_FIELD_END + 0x19,			//MIRROR_ALL
        CORPSE_FIELD_FLAGS = Descriptors::OBJECT_FIELD_END + 0x1A,			//MIRROR_ALL
        CORPSE_FIELD_DYNAMIC_FLAGS = Descriptors::OBJECT_FIELD_END + 0x1B,			//MIRROR_VIEWER_DEPENDENT
        CORPSE_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x1C,
    };
		
	enum AreaTriggerFields {
        AREA_TRIGGER_FIELD_CASTER = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        AREA_TRIGGER_FIELD_DURATION = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        AREA_TRIGGER_FIELD_SPELL_ID = Descriptors::OBJECT_FIELD_END + 0x03,			//MIRROR_ALL
        AREA_TRIGGER_FIELD_SPELL_VISUAL_ID = Descriptors::OBJECT_FIELD_END + 0x04,			//MIRROR_VIEWER_DEPENDENT
        AREA_TRIGGER_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x05,
    };
		
	enum SceneDescriptors {
        SCENE_OBJECT_FIELD_SCRIPT_PACKAGE_ID = Descriptors::OBJECT_FIELD_END + 0x00,			//MIRROR_ALL
        SCENE_OBJECT_FIELD_RND_SEED_VAL = Descriptors::OBJECT_FIELD_END + 0x01,			//MIRROR_ALL
        SCENE_OBJECT_FIELD_CREATED_BY = Descriptors::OBJECT_FIELD_END + 0x02,			//MIRROR_ALL
        SCENE_OBJECT_FIELD_END = Descriptors::OBJECT_FIELD_END + 0x04,
    };
}

#endif